This RMD imports data to generate figures for Natasha Ryan’s undergraduate honours thesis at Mount Allison University.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Fc_data <- readRDS("../Data/CleanData/LOW_Fragilariopsis_cylindrus_SolFitsTrim.Rds") %>%
mutate(SState = ifelse(SState == 4, 0, SState))
s.col <- c("#003D4F","#375D97","#3397A6","#9FD4C2")
Fc_data %>%
filter(Filename == "20230926_SeGu1001_0C_1s") %>%
filter(Flashnumber <= 13) %>%
ggplot() +
geom_point(aes(x=Flashnumber, y=FvFmrunnorm, col=as.factor(SState))) +
scale_color_manual(values = s.col) +
#scale_y_continuous(limits=c(0.5, 1.1)) +
scale_x_continuous(breaks=c(4,8,12))+
labs(x= "Flash Number", y= "Normalized Chlorophyll Fluorescence") +
theme_bw() +
theme(legend.position = "none", text = element_text(family = "Palatino"),
axis.text=element_text(size=16), axis.title=element_text(size=14.8),
panel.grid.major = element_blank(), panel.grid.minor = element_blank())
Fc_data %>%
filter(CultureID == "SeGu1001",
Temp_C %in% c(0,10),
ObsDate == "2023-09-27",
PulseSpace_s %in% c(1,4,16)) %>%
ggplot() +
geom_point(aes(x=Flashnumber, y=FvFmrunnorm, col=as.factor(SState))) +
scale_color_manual(values = s.col) +
labs(x= "Flash Number", y= "Normalized Chlorophyll Fluorescence", col= "Majority S-State") +
facet_grid(rows=vars(PulseSpace_s), cols=vars(Temp_C)) +
scale_y_continuous(sec.axis=sec_axis(~ . , name = sym("Flash Spacing (s)"),breaks = NULL,labels = NULL)) +
scale_x_continuous(breaks=c(4,8,12,16,20,24,28,32),
sec.axis=sec_axis(~ . , name = sym("Measurement Temperature (°C)"), breaks = NULL, labels = NULL)) +
theme_bw() +
theme(text = element_text(family = "Times New Roman"),
axis.text=element_text(size=11), axis.title=element_text(size=13),
legend.text=element_text(size=11), legend.title=element_text(size=13),
strip.background = element_rect(colour="black", fill=NA),
strip.text = element_text(size=11),
panel.grid.major = element_blank(), panel.grid.minor = element_blank())
# ggsave("representativeoscillations.png", width = 8, height = 5, dpi = 900,
# plot=last_plot(),
# path="../Output")
wavelets <- readRDS("../Data/ProcessedData/LOW_Wavelets.Rds")
specieslists <- split(wavelets, sub("_.*", "_wavelets", names(wavelets)))
list2env(specieslists, envir = .GlobalEnv)
## <environment: R_GlobalEnv>
plot.wt.grid <- function(wavelets) {
result_list <- lapply(names(wavelets), function(condition_name) {
condition <- wavelets[[condition_name]]
Power.avg <- condition$Power.avg
Power.avg.pval <- condition$Power.avg.pval
Period <- condition$Period
Condition <- rep(condition_name, length(Power.avg)) # Repeat condition name for each row
df <- data.frame(Power.avg, Power.avg.pval, Period, Condition) %>%
separate(Condition, into = c("Strain", "PulseSpace_s", "Temp_C", "LightLevel"), sep = "_") %>%
mutate(PulseSpace_s = factor(PulseSpace_s, levels = c("1","2","4","8","16")),
Temp_C = factor(Temp_C, levels =
c("0","2","4","6","8","10","12","14","16","18","20","22","24","26","28"))) %>%
mutate(Power.avg.pval = ifelse(Power.avg.pval <= 0.05, 0, 1))
return(df)
})
result_df <- bind_rows(result_list) # Combine all data frames and add a column for element names
plot <- result_df %>%
ggplot()+
geom_path(aes(x= Power.avg, y= Period, col=Power.avg.pval), linewidth=0.8) +
scale_color_gradient(low="#4AC0AD", high="black", breaks= c(0.05, 1),
labels= c("≤ 0.05", "> 0.05"), guide="legend") +
labs(x= "Average Wavelet Power", colour= "P-Value") +
facet_grid(rows=vars(PulseSpace_s), cols = vars(Temp_C)) +
scale_y_continuous(sec.axis=sec_axis(~ . , name = sym("Flash Spacing (s)"),
breaks = NULL,labels = NULL)) +
scale_x_continuous(limits= c(0:1), breaks=c(0, 0.5, 1),
sec.axis=sec_axis(~ . , name = sym("Measurement Temperature (°C)"), breaks = NULL, labels = NULL)) +
theme_bw() +
theme(text = element_text(family = "Times New Roman"),
axis.text=element_text(size=11), axis.title=element_text(size=13),
legend.text=element_text(size=11), legend.title=element_text(size=13),
strip.background = element_rect(colour="black", fill=NA),
strip.text = element_text(size=11),
panel.grid.major = element_blank(), panel.grid.minor = element_blank())
return(plot)
}
plot.wt.grid(Ci_wavelets)
plot.wt.grid(Cm_wavelets)
plot.wt.grid(Cp_wavelets)
plot.wt.grid(Cr_wavelets)
plot.wt.grid(Cv_wavelets)
plot.wt.grid(Tp_wavelets)
sstate_damping <- readRDS("~/LowLightPhotosynth/Data/ProcessedData/LOW_SState_Damping.Rds") %>%
mutate(Strain = factor(Strain))
split.sstate <- split(sstate_damping, sstate_damping$Strain)
names(split.sstate) <- c("Ci.damping", "Cm.damping", "Cp.damping", "Cr.damping",
"Cv.damping", "Fc.damping", "Tp.damping")
list2env(split.sstate, envir = .GlobalEnv)
## <environment: R_GlobalEnv>
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(reshape2)
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
library(orca)
library(processx)
Cv.loess <- loess(DampingIndex ~ TempDiff_C * Light_Level, data = Cv.damping)
Cv.data <- with(Cv.damping, expand.grid(
Light_Level = seq(min(Light_Level), max(Light_Level), 0.1),
TempDiff_C = seq(min(TempDiff_C), max(TempDiff_C), 0.1)
))
Cv_mtrx3d <- predict(Cv.loess, newdata = Cv.data)
Cv_mtrx_melt <- reshape2::melt(Cv_mtrx3d, id.vars = c('TempDiff_C', 'Light_Level'), measure.vars = 'DampingIndex') %>%
mutate(TempDiff_C = as.numeric(str_sub(TempDiff_C, str_locate(TempDiff_C, '=')[1,1] + 1)),
Light_Level = as.numeric(str_sub(Light_Level, str_locate(Light_Level, '=')[1,1] + 1))) %>%
dplyr::rename("DampingIndex" = "value") %>%
mutate(DampingIndex = ifelse(DampingIndex < 0, 0, DampingIndex))
Cv.plot <- plot_ly(Cv_mtrx_melt, x = ~TempDiff_C, y = ~Light_Level, z = ~DampingIndex, type = "contour",
autocontour = TRUE, contours = list(coloring = 'heatmap', showlabels= TRUE),
line = list(smoothing = 0.9)) %>%
colorbar(title = "Damping Index", size = 12) %>%
config(staticPlot = TRUE) %>%
layout(
font = list(family = "Times New Roman", size = 13),
xaxis = list(title = "Deviation from Growth Temperature (°C)",
tickvals=c(-12, -8, -4, 0, 4), fixedrange = TRUE),
yaxis = list(title = "Light Level (µmol photons m<sup>-2</sup> s<sup>-1</sup>)",
fixedrange = TRUE)) %>%
config(responsive =FALSE)
#orca(Cv.plot, file = "../Output/Cv.plot.png")
Cv.plot